import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2022-11-20
 * Time:15:43
 */

/**
 * 会针对某些GET请求生效
 * 此处写下的"/hello"意思就是GET请求并且url里面路径是/hello的请求,才会生效!!
 * 此时tomcat才会调用到这里的doGet方法
 * Tomcat可以让你关联到很多路径的,可以给请求中的不同路径,关联上不同的类,也就执行了不同的方法了
 */
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    /**
     * doGet:HttpServlet父类中已经包含的方法了
     * doGet表示,当前Tomcat在收到某些GET请求的时候,会调用这个doGet方法
     * 此处去重写父类的方法
     * @param req:请求 这是Tomcat吧HTTP请求报文解析成一个对象
     * @param resp:响应 则是Tomcat构造的一个空的对象(相当于一个"输出型参数")
     * 此处doGet做的工作就是"根据请求,计算响应",需要根据req中的一些数据 + 业务逻辑 构造生成一个完整的resp对象
     * 再进一步,tomcat就把resp对象转成一个HTTP响应报文
     * @throws ServletException
     * @throws IOException
     */
    /**
     * 经典的服务器要做的三件事
     * 1.读取请求并解析
     * 2.根据请求计算响应  :业务逻辑(可能比较简单,可能非常难)
     * 3.把响应结果返回给客户端
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super:获取到父类的引用
        //注意!自动生成的这个调用父类方法的代码,一定一定要干掉!!如果留着一定出问题(405)!!
        //super.doGet(req, resp);

        //是 Tomcat 这边打印一个日志
        System.out.println("hello");
        //还可以给客户端返回一个 hello
        resp.getWriter().write("hello");
    }
}
